/*
 * queue.h
 *
 *  Created on: 2020��1��1��
 *      Author: Administrator
 */

#include <stdbool.h>
#include "../list/linked_list.h"

#ifndef LINKED_QUEUE_H_
#define LINKED_QUEUE_H_


typedef struct LinkedQueue {
	Node* front;     // ��ͷ
	Node* rear;     // ��β
} LinkedQueue;

/**
 * 初始化带头结点的链队
 */
void init_queue(LinkedQueue* queue);

void create_queue(LinkedQueue* queue, int array[], int length);

bool is_queue_empty(LinkedQueue* queue);
/**
 * 入队
 * 尾插法，从队尾入队
 */
bool enqueue(LinkedQueue* queue, int value);
/**
 * 出队
 * 头删法，从队头出队
 */
int dequeue(LinkedQueue* queue);

void print_queue(LinkedQueue* queue);

#endif /* QUEUE_H_ */
